package org.pupil.proxy.cglib;

import net.sf.cglib.proxy.Enhancer;
import org.pupil.proxy.IProxy;

/**
 * @Description: CGLIB动态代理类工厂
 * @Author: pupil
 * @Date: 2024/07/10 下午 4:49
 */
public class CgLibProxyFactory implements IProxy {

    @Override
    public <T> T getProxy(Class<T> clazz) {
        // 创建动态代理增强类
        Enhancer enhancer = new Enhancer();
        // 设置被代理类
        enhancer.setSuperclass(clazz);
        // 设置方法拦截器
        enhancer.setCallback(new CgLibProxy(clazz));
        // 创建代理类
        return (T) enhancer.create();
    }
}
